package io;

import java.io.BufferedOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

/*
缓冲流写出时的缓冲区问题
 */
public class FlushDemo {
    public static void main(String[] args) throws IOException {
        /*
        通过缓冲流写出的数据会被临时存入缓冲流内部的字节数字中
        直到数组存满数据时才会真实写出一次
        通过缓冲流输出流的flush（）方法会强制将缓冲流中已经缓冲的数据一次性写出

        flush（）方法是在flushable中定义的
        而字节输出流的超类OutputStream实现了该接口
        这意味着所有字节输出流都具有该方法
        但是只有缓冲流真正实现了flush（）应用的功能
        其他高级流flush（）方法都是调用其连接的流的flush（），将该动作传递下去
         */


        FileOutputStream fos=new FileOutputStream("bos.txt");
        BufferedOutputStream bos=new BufferedOutputStream(fos);
        String line="别看我只是一只狼";
        bos.write(line.getBytes(StandardCharsets.UTF_8));
        System.out.println("写出完成");
        bos.flush();
        //bos.close();会自动调用一次flush（）





    }
}
